package com.coincalf.wallet.blockchain.bean.trx;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * 波场交易查询结果  调用API gettransactioninfobyid
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class TrxTxInfo {

    //交易id
    @JsonProperty("id")
    private String txId;

    //手续费 单位 sun  1TRX = 10^6 SUN
    @JsonProperty("fee")
    private BigDecimal fee;

    //区块高度
    @JsonProperty("blockNumber")
    private Long blockNumber;

    //区块时间
    @JsonProperty("blockTimeStamp")
    private Long blockTimeStamp;

    //待定... 失败则是""
    @JsonProperty("contractResult")
    private List<String> contractResult;

    //合约地址 hex格式 例如 41a614f803b6fd780986a42c78ec9c7f77e6ded13c
    @JsonProperty("contract_address")
    private String contractAddress;

    //能量带宽消耗情况
    @JsonProperty("receipt")
    private Receipt receipt;

    @JsonProperty("log")
    private List<Object> log;

    //交易失败会出现
    @JsonProperty("resMessage")
    private String resMessage;

    //交易状态 失败会出现 例如 FAILED 成功则没有
    @JsonProperty("result")
    private String result;


    //能量带宽相关
    @Data
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class Receipt {
        //消耗TRX获取的能量 可能没有
        @JsonProperty("energy_fee")
        private BigDecimal energyFee;

        //消耗能量 可能没有
        @JsonProperty("energy_usage_total")
        private BigDecimal energyUsageTotal;

        //消耗带宽
        @JsonProperty("net_usage")
        private BigDecimal netUsage;

        //结果 TRX交易无此信息 TRC20成功则是SUCCESS 失败则是失败原因 例如 OUT_OF_ENERGY
        @JsonProperty("result")
        private String result;
    }

}
